using System;
using System.Threading;
using System.Threading.Tasks;

namespace Vision.Abstractions
{
	/// <summary>
	/// 抽象的图像设备（相机）。
	/// 生命周期由容器/业务管理，需支持启动/停止与释放。
	/// </summary>
	public interface IDevice : IDisposable
	{
		/// <summary>执行设备初始化。</summary>
		Task InitializeAsync();
		/// <summary>启动设备，开始采集。</summary>
		Task StartAsync(CancellationToken cancellationToken);
		/// <summary>停止设备，释放运行资源。</summary>
		Task StopAsync(CancellationToken cancellationToken);
		/// <summary>指示设备是否处于运行状态。</summary>
		bool IsRunning { get; }
	}
}


